import { IRawContact } from "./IRawContact";
import type { RawMsgContents } from "./IRawMsgContents";
import type { MsgSubTypeEnum } from "./MsgSubTypeEnum";
import { MsgTypeEnum } from "./MsgTypeEnum";
/**
 * 消息
 *
 * @export
 * @interface IRawMsg
 */
export interface IRawMsg {
  /**
   * 消息序号
   * 
   * 长整型，毫秒时间戳
   * 
   * @type {?number}
   * @memberof IRawMsg
   */
  seq?: number;

  /**
   * 时间字符串
   * 格式：2025-07-21T14:27:34+08:00
   *
   * @type {string}
   * @memberof IRawMsg
   */
  time?: string;

  /**
   * 会话对方的userName
   * 
   * 若会话为‘群聊’，talker为'群聊的userName'，以`@chatroom`结尾
   * 若会话为‘私聊’，对方发送的消息中，talker与sender一致
   * 
   * @type {string}
   * @memberof IRawMsg
   */
  talker?: string;

  /**
   * 会话对方的名称
   * 
   * 若会话为‘私聊’，该字段为空字符串
   * 若会话为‘群聊’，该字段为群名
   *
   * @type {string}
   * @memberof IRawMsg
   */
  talkerName?: string;

  /**
   * 是否群聊
   *
   * @type {boolean}
   * @memberof IRawMsg
   */
  isChatRoom?: boolean;

  /**
   * 消息发送人userName
   *
   * @type {string}
   * @memberof IRawMsg
   */
  sender?: string | IRawContact['userName'];

  /**
   * 消息发送人名。
   * 消息发送人的'用户对其的备注名'或'发送人自己的群昵称'或'消息发送人昵称'
   */
  senderName?: string | IRawContact['remark'] | IRawContact['nickName'];

  /**
   * 消息发送人是不是我自己
   *
   * @type {?boolean}
   */
  isSelf?: boolean;

  /**
   * 消息类型
   * 
   * @type {(number | MsgTypeEnum)}
   * @memberof IRawMsg
   */
  type?: number | MsgTypeEnum;

  /**
   * 子类型
   *
   * @type {(number | MsgSubTypeEnum)}
   * @memberof IRawMsg
   */
  subType?: number | MsgSubTypeEnum;

  /**
   * 文字内容
   * 
   * 目前看来只有type为MsgTypeEnum.Text时才有内容
   * @see {type}
   * @see {MsgTypeEnum.Text}
   * @type {string}
   * @memberof IRawMsg
   */
  content?: string;

  contents?: RawMsgContents;
  
  account?: string;
}
